home *** CD-ROM | disk | FTP | other *** search
- {
- I am in need of a very fast LCASE or UCASE routine.
- A general translation utility could come in handy:
- }
-
- USES CRT;
-
- type
- t_table=array [char] of char;
-
- procedure translate(var buffer; var table:t_table; len:word);
- assembler;
- asm
- mov cx,[len]
- JCXZ @@end
- les bx,[table]
- push ds
- cld
- lds si,[buffer]
- @@redo:
- lodsb
- seges
- xlat
- mov [si-1],al
- LOOP @@redo
- pop ds
- @@end:
- end;
-
- var
- uptable : t_table;
- lotable : t_table;
- s: string;
- c: char;
- begin
- ClrScr;
- (* convert every letter to its uppercase pendant *)
- for c:=#0 to #255 do uptable[c]:=upcase(c);
- (* convert every letter to its lowercase pendant *)
- for c:=#0 to #255 do lotable[c]:= CHR(ORD(c) OR $20);
- readln(s);
- translate(s[1],uptable,length(s));
- writeln(s);
- translate(s[1],lotable,length(s));
- writeln(s);
- end.